package wyu.mybatis.simple.mapper;


import org.apache.ibatis.annotations.Param;
import wyu.mybatis.simple.model.SysRole;
import wyu.mybatis.simple.model.SysUser;

import java.util.List;

/**
 * Created by ajinlong on 2021/7/4.
 */
public interface UserMapper {
  List<SysUser> selectAll();
  SysUser selectById(Long id);
  List<SysRole>  selectRolesByUserId(Long userid);

  /**
   * 根据用户 id 和 角色的 enabled 状态获取用户的角色
   *
   * @param userId
   * @param enabled
   * @return
   */
  List<SysRole> selectRolesByUserIdAndRoleEnabled(@Param("userId")Long userId, @Param("enabled")Integer enabled);


  /**
   * 新增用户
   *
   * @param sysUser
   * @return
   */
  int insert(SysUser sysUser);

  /**
   * 新增用户 - 使用 useGeneratedKeys 方式
   *
   * @param sysUser
   * @return
   */
  int insert2(SysUser sysUser);
  /**
   * 新增用户 - 使用 selectKey 方式
   *
   * @param sysUser
   * @return
   */
  int insert3(SysUser sysUser);

  /**
   * 根据主键更新
   *
   * @param sysUser
   * @return
   */
  int updateById(SysUser sysUser);


  /**
   * 虽然是两个方法，但是只对应了一个xml的<delete>，妙处应该在于，这些标签应该会自动转换对象的属性，对应上param
   */

  /**
   * 通过主键删除
   *
   * @param id
   * @return
   */
  int deleteById(Long id);

  /**
   * 通过主键删除
   *
//   * @param id
   * @return
   */
  int deleteById(SysUser sysUser);
}
